package com.wtao.udiskreadwrite.utils;

import android.util.Log;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileUtil {
    static String TAG = "FileUtil";
    public static void fileCopyDirTo(File fileDir, File targetDir) throws IOException {
        if(fileDir.exists()){
            if(!targetDir.exists()){
                targetDir.mkdirs();
            }
            File[] files = fileDir.listFiles();
            if(files!=null && files.length>0){
                for(File f: files){
                    if(f.isDirectory()){
                        File child = new File(targetDir, f.getName());
                        if(!child.exists()){
                            Log.e(TAG, "目录不存在需要创建 child=>"+child.getAbsolutePath());
                            child.mkdirs();
                        }
                        fileCopyDirTo(f, child);
                    }else{
                        File childFile = new File(targetDir, f.getName());
                        fileCopyTo(f, childFile);
                    }
                }
                Log.e(TAG, "文件夹复制完毕！");
            }
        }else{
            Log.e(TAG, "原始文件不存在！！");
        }
    }
    public static void fileCopyTo(File file, File targetFile) throws IOException {
        Log.e(TAG, "fileCopyTo :" + file.getAbsolutePath());
        if (file.exists()) {
            if(!targetFile.exists()){
                if(!targetFile.getParentFile().exists()){
                    targetFile.getParentFile().mkdirs();
                }else{
                    Log.e(TAG, "父目录存在："+targetFile.getParentFile().getAbsolutePath());
                }
                Log.e(TAG, "targetFile=>"+targetFile.getAbsolutePath());
                targetFile.createNewFile();
            }
            FileInputStream inputStream = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(targetFile);
            int len = -1;
            byte[] buffer = new byte[1024];
            while ((len = inputStream.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }
            fos.flush();
            inputStream.close();
            fos.close();
            Log.e(TAG, "文件复制完毕");
        } else {
            Log.e(TAG, "原始文件不存在无需复制");
        }
    }
}
